#pragma once
#include <memory>

class ITime {
public:
	virtual ~ITime() {}
	virtual std::unique_ptr<ITime> copy() const = 0;
	virtual const int getYear() const = 0;
	virtual const int getMonth() const = 0;
	virtual const int getDay() const = 0;
	virtual const int getHour() const = 0;
	virtual const int getMinute() const = 0;
	virtual const int getSecond() const = 0;
	virtual const long int getUnixTime() const = 0;
	virtual const long int getDifferenceInSeconds(const ITime& other) const = 0;
	virtual const std::string getRepresentation() const = 0;
};